﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GmailMetroNotifier.Client.UIP
{
    /// <summary>
    /// Represents a provider that can be used to deliver notifications.
    /// </summary>
    public interface INotificationProvider
    {
        /// <summary>
        /// Delivers a notification using the indicated severity and message.
        /// </summary>
        /// <param name="message">The message to notify.</param>
        /// <param name="severity">The severity of the notification.</param>
        /// <returns>The result of the notification.</returns>
        void Notify(string message, NotificationSeverity severity);

        /// <summary>
        /// Delivers a notification using the indicated severity and message.
        /// </summary>
        /// <param name="message">The message to notify.</param>
        /// <param name="severity">The severity of the notification.</param>
        /// <param name="resultHandler">The action to be called for handling the notification result.</param>
        /// <returns>The result of the notification.</returns>
        void Notify(string message, NotificationSeverity severity, Action<NotificationResult> resultHandler);
    }
}
